/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upc.sistemaventas.persistencia;

import edu.upc.sistemaventas.dominio.AvisoDomain;
import edu.upc.sistemaventas.dominio.CategoriaDomain;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 *
 * @author PC0
 */
public class MySqlAvisoDAO extends MySqlBaseDAO implements AvisoDAO{
    
  public MySqlAvisoDAO() throws Exception {
    super();
  }
  
  public int registrarAviso(AvisoDomain aviso) {
    int idCorrelativo = -1;
    String sql = "insert into aviso ( nombre, descripcion, fechalimite ) ";
    sql += " values ( ?, ? , ? ) ";
    try {
      PreparedStatement pstmt = db.getPreparedStatement(sql, true);
      pstmt.setString(1, aviso.getNombreAviso());
      pstmt.setString(2, aviso.getDescripcionAviso());
      pstmt.setDate(3, new java.sql.Date(aviso.getFechaLimite().getTime()));
      
      /*SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
      Date fecha;
      fecha = df.parse(aviso.getFechaLimite().toString());
      
      pstmt.setString(3, fecha.toString());
      */
      /*if (categoria.getCategoriaPadre() != null) {
        pstmt.setInt(3, categoria.getCategoriaPadre().getId());
      } else {
        pstmt.setNull(3, java.sql.Types.INTEGER);
      }*/
      
      pstmt.executeUpdate();
      ResultSet rs = pstmt.getGeneratedKeys();
      if (rs.next()) {
        idCorrelativo = rs.getInt(1);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return idCorrelativo;
  }

    public Collection<AvisoDomain> listarAvisos() {
    Collection<AvisoDomain> listaAvisos = null;
    String sql = "select id, nombre, descripcion, fechalimite ";
    sql += "        from aviso c ";
    //sql += "       where c.id_padre = ? ";
    try {
      listaAvisos = new ArrayList<AvisoDomain>();
      PreparedStatement pstmt = db.getPreparedStatement(sql);
      //pstmt.setInt(1, idCategoriaPadre);
      ResultSet rs = pstmt.executeQuery();
      while (rs.next()) {
        AvisoDomain aviso = obtenerAvisoLlena(rs);
        listaAvisos.add(aviso);
      }
      return listaAvisos;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
    
   private AvisoDomain  obtenerAvisoLlena(ResultSet rs) throws Exception {
    AvisoDomain aviso = new AvisoDomain();
    aviso.setId(rs.getInt("id"));
    aviso.setNombreAviso(rs.getString("nombre"));
    aviso.setDescripcionAviso(rs.getString("descripcion"));
    
    /*
    SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    Date fecha;
    fecha = df.parse(rs.getString("fechalimite").toString());
      
    aviso.setFechaLimite(fecha);*/
    aviso.setFechaLimite(rs.getDate("fechalimite"));
    /*if (rs.getObject("id_padre") != null) {
      CategoriaDomain categoriaPadre = getCategoria(rs.getInt("id_padre"));
      categoria.setCategoriaPadre(categoriaPadre);
    }*/
    return aviso;
  }
      
}
